package Deadlock;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;


public class Proceso2 extends Thread{
	
	private DataBaseConnection conexion;
	public String sentencia;
	public boolean leido;
	
	public String getSentencia() {
		return sentencia;
	}

	public void setSentencia(String sentencia) {
		this.sentencia = sentencia;
	}

	@Override
	public void run() {

		System.out.println("Corriendo Hilo 2");

		int count = 0;
		while (count < 2) {
			if (!leido) {
				System.out.println("Hilo 2 quiere leer datos");
				this.leerDatos();
				leido = true;
				
				try {
					this.sleep(3000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			} 
			else {
				System.out.println("Hilo 2 quiere escribir datos");
				this.escribirDatos();
				leido = false;
			}
			count++;
		}
	}
	
	public Proceso2(){
		
		this.conexion = new DataBaseConnection();
		this.sentencia = "";
		this.leido = false;
	}
	
	/**
	 * Metodo que ejecuta una consulta de lectura de datos
	 */
	public void leerDatos(){
		
		String consulta = "SELECT * FROM PROCESOUNO.CURSOS WHERE IDCUR='PI' FOR UPDATE";
		conexion.Conectar("procesodos", "procesodos", "192.168.50.129");
		ResultSet resultado = conexion.ExecuteQuery(consulta);
		
		try {
			while(resultado.next()){
				System.out.println("Hilo 2 - LEYENDO registro con PK= " +resultado.getString("IDCUR")+", NOMBRE= "+resultado.getString("NOMCUR"));
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * Metodo que ejecuta una consulta de escritura de datos
	 */
	public void escribirDatos(){
					
		conexion.Conectar("procesodos", "procesodos", "192.168.50.129");

		String consulta = "UPDATE PROCESOUNO.ALUMNOS SET NOMALU='NuevoNombre' WHERE DOCID=500298";
		boolean salida = conexion.Execute(consulta);
		
		if(salida = true)
		{
			System.out.println("Transaccion 2 - ESCRIBIENDO registro con PK= 500298");
		}
	}
		
	public void setAutoCommit(boolean valor){
		
		String sentencia = "";
		
		if(valor= false){
			sentencia = "autocommit off";
		}
		else 
		{
			sentencia = "autocommit on";
		}
		
		conexion.Conectar("procesodos", "procesodos", "192.168.50.129");
		System.out.println(sentencia);
		ResultSet resultado = conexion.ExecuteQuery(sentencia);
		
		}		
		
	}

